/* 具体路由流程查看asssets/1.png */
import Vue from 'vue'
import router from './router'
import store from './store/index'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style
NProgress.configure({
	showSpinner: false
})
const whiteList = ['/user/login', '/404', '/redirect']; //免登陆页面
router.beforeEach((to, from, next) => {
	NProgress.start() // start progress bar
	if (localStorage.getItem('token') || whiteList.indexOf(to.path) !== -1) {
		next()
	} else {
		next({
			path: '/user/login',
			query: {
				redirect: to.fullPath
			}
		})
		NProgress.done()
	}

})
// router.beforeEach((to, from, next) => {
// 	NProgress.start() // start progress bar

// 	/* 判断 token 校验用户信息， */
// 	if (localStorage.getItem('token')) {
// 		/* 判断获取菜单 */
// 		if (!store.state.hasGetMenu) {
// 			store.dispatch('GenerateRoutes')
// 				.then(() => {
// 					router.addRoutes(store.state.addRouters);
// 					/* 先判断跳转的页面中，是否再路由中。如果不在怎应该跳转到首页 */
// 					let redirectpath = from.query.redirect;
// 					if (redirectpath && store.state.addRouters && store.state.addRouters.length > 0) {
// 						if (!store.state.addRouters.some(item => item.path == redirectpath)) {
// 							redirectpath = to.path
// 						}
// 					}
// 					let redirect = decodeURIComponent(redirectpath || to.path)
// 					if (to.path === redirect) {
// 						// hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
// 						next({
// 							...to,
// 							replace: true
// 						})
// 					} else {
// 						// 跳转到目的路由
// 						next({
// 							path: redirect
// 						})
// 					}

// 				}).catch(e => {

// 					store.dispatch('Logout').then(() => {
// 						next({
// 							path: '/user/login',
// 						})
// 					})

// 				});
// 		} else {
// 			next()
// 		}
// 	} else {
// 		if (whiteList.indexOf(to.path) !== -1) {
// 			// 在免登录白名单，直接进入
// 			next()
// 		} else {
// 			next({
// 				path: '/user/login',
// 				query: {
// 					redirect: to.fullPath
// 				}
// 			})
// 			NProgress.done()
// 		}

// 	}
// })

router.afterEach(() => {
	NProgress.done() // finish progress bar
})
